package com.chalk.model;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import java.util.Date;

/**
 * 省市区县行政区划地名表(SysRegion)实体类
 *
 * @author maxiaoqiang
 * @since 2019-03-28 09:55:27
 */
@ApiModel(value = "SysRegion", description = "省市区县行政区划地名表")
@Data
@TableName("t_sys_region")
public class SysRegion {

    /**
     * 地区id
     */
    @ApiModelProperty(name = "regionId", value = "地区id")
    @TableId(type = IdType.ID_WORKER_STR)
    private String regionId;


    /**
     * 对接外部系统地区id
     */
    @ApiModelProperty(name = "regionIdOut", value = "对接外部系统地区id")
    @TableField("region_id_out")
    private String regionIdOut;

    /**
     * 地区名称
     */
    @ApiModelProperty(name = "regionName", value = "地区名称")
    @TableField("region_name")
    @NotEmpty(message = "名称不可为空")
    private String regionName;

    /**
     * 级别（省级为1，市级/直辖市区县为2，区县为3）
     */
    @ApiModelProperty(name = "level", value = "级别（省级为1，市级/直辖市区县为2，区县为3）")
    @TableField("level")
    @NotEmpty(message = "级别不可为空")
    private Integer level;

    /**
     * 父级地区id（省级地名的父级id为0）
     */
    @ApiModelProperty(name = "parentId", value = "父级地区id（省级地名的父级id为0）")
    @TableField("parent_id")
    private String parentId;

    /**
     * 地区编码（建议用国家民政部的编码）
     */
    @ApiModelProperty(name = "regionCode", value = "地区编码（建议用国家民政部的编码）")
    @TableField("region_code")
    private String regionCode;

    /**
     * 邮政编码
     */
    @ApiModelProperty(name = "postCode", value = "邮政编码")
    @TableField("post_code")
    @NotEmpty(message = "邮政编码不可为空")
    private String postCode;

    /**
     * 电话区号
     */
    @ApiModelProperty(name = "diallingCode", value = "电话区号")
    @TableField("dialling_code")
    private String diallingCode;

    /**
     * 简写地名（如：内蒙古）
     */
    @ApiModelProperty(name = "shotName", value = "简写地名（如：内蒙古）")
    @TableField("shot_name")
    private String shotName;

    /**
     * 地名拼音
     */
    @ApiModelProperty(name = "pinyinName", value = "地名拼音")
    @TableField("pinyin_name")
    private String pinyinName;

    /**
     * 拼音简写（一律大写，如北京为BJ）
     */
    @ApiModelProperty(name = "pinyinShortName", value = "拼音简写（一律大写，如北京为BJ）")
    @TableField("pinyin_short_name")
    private String pinyinShortName;

    /**
     * 多级地名合并的全名（各级地名间用逗号间隔，值如： 广东省,深圳市,南山区）
     */
    @ApiModelProperty(name = "mergedName", value = "多级地名合并的全名（各级地名间用逗号间隔，值如： 广东省,深圳市,南山区）")
    @TableField("merged_name")
    private String mergedName;

    /**
     * 多级简写地名合并后的全名（各级地名间用逗号间隔，值如：广东,深圳,南山）
     */
    @ApiModelProperty(name = "mergedShortName", value = "多级简写地名合并后的全名（各级地名间用逗号间隔，值如：广东,深圳,南山）")
    @TableField("merged_short_name")
    private String mergedShortName;

    /**
     * 纬度
     */
    @ApiModelProperty(name = "latitude", value = "纬度")
    @TableField("latitude")
    private String latitude;

    /**
     * 经度
     */
    @ApiModelProperty(name = "longitude", value = "经度")
    @TableField("longitude")
    private String longitude;

    /**
     * 是否可用（1、可用，0、不可用，默认1）
     */
    @ApiModelProperty(name = "isAvailable", value = "是否可用（1、可用，0、不可用，默认1）")
    @TableField("is_available")
    @NotEmpty(message = "是否可用不可为空")
    private Integer isAvailable;

    /**
     * 是否已删除（逻辑删除，1、已删除，0、未删除，默认0）
     */
    @ApiModelProperty(name = "isDeleted", value = "是否已删除（逻辑删除，1、已删除，0、未删除，默认0）")
    @TableField("is_deleted")
    private Integer isDeleted;

    /**
     * 创建时间
     */
    @ApiModelProperty(name = "createTime", value = "创建时间")
    @TableField("create_time")
    private Date createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(name = "updateTime", value = "更新时间")
    @TableField("update_time")
    private Date updateTime;

    /**
     * 操作人类型（0、系统自动操作，1、平台人员操作，2、商家人员操作，3、会员操作）
     */
    @ApiModelProperty(name = "operatorType", value = "操作人类型（0、系统自动操作，1、平台人员操作，2、商家人员操作，3、会员操作）")
    @TableField("operator_type")
    private Integer operatorType;

    /**
     * 操作人id（根据操作人类型会对应不同的表记录）
     */
    @ApiModelProperty(name = "operatorId", value = "操作人id（根据操作人类型会对应不同的表记录）")
    @TableField("operator_id")
    private Long operatorId;

}